﻿<src:BaseWPFWindow x:Class="ESF.SFT.FileUploader.FileUploaderWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
		xmlns:src="clr-namespace:ESF.WinForms.Elements;assembly=ESF.WinForms"
        Title="Cargador de Archivos" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" AllowDrop="True" Drop="Window_Drop" 
		xmlns:lc="clr-namespace:ESF.SFT.FileUploader.Converters" Closing="Window_Closing" Height="724" Width="817">
	<Window.CommandBindings>
		<CommandBinding Command="Paste" Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute" />
	</Window.CommandBindings>
	<Window.Resources>
		<lc:LengthBytesFormatedConverter x:Key="lengthBytesConverter"/>
		<lc:ValidFileColorConverter x:Key="validFileColorConverter"/>
		<lc:StatusFileColorConverter x:Key="statusFileColorConverter"/>
	</Window.Resources>
	<DockPanel>
		<Grid Margin="10 12 10 0" DockPanel.Dock="Top">
			<Grid.RowDefinitions>
				<RowDefinition />
				<RowDefinition Height="Auto" />
				<RowDefinition />
			</Grid.RowDefinitions>

            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                    <ColumnDefinition Width="*"></ColumnDefinition>
                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                </Grid.ColumnDefinitions>
				<Image Stretch="None" Name="imgSelectedFiles" Width="64" Height="64" ToolTip="Seleccione archivos ubicados en su computador para cargarlos" />
                <StackPanel Orientation="Vertical" Grid.Column="1">
                    <Label Padding="5 2 0 0" Content="Archivos de Entrada" VerticalAlignment="Bottom" FontWeight="SemiBold" FontSize="15" />
                    <Label Padding="5 0 0 0" Content="Arrastre, copie o seleccione sus archivos a &quot;Archivos de Entrada&quot;"  />
                    <Label Content="No ha seleccionado archivos" FontStyle="Italic" Name="lblgrvSelectedFilesCount" />
                </StackPanel>
                <Image Name="imgInfo" Grid.Column="2" Margin="8 0 20 0" VerticalAlignment="Center" ToolTip="De click para ver los datos de su sesión" Stretch="Uniform" Height="32" Width="32" MouseDown="imgSessionInfo_MouseDown" />
                <StackPanel Orientation="Vertical" Grid.Column="3" Margin="0 12 0 0">
                    <Button Name="btnConfigureDigitalSign" Content="Configurar Firma Digital" Width="180" Click="btnConfigureDigitalSign_Click" Height="26" />
                    <Label Name="lblFileSignStatus" Content="No ha configurado certificado"></Label>
                </StackPanel>                
            </Grid>

            <DataGrid Grid.Row="1" Height="216" Margin="0 4 0 0" Grid.Column="1" CanUserSortColumns="True" Grid.ColumnSpan="3" Name="grvSelectedFiles" AllowDrop="True" AutoGenerateColumns="False" CanUserResizeRows="False" SelectionUnit="FullRow" SelectionMode="Extended" ItemsSource="{Binding}" CanUserResizeColumns="True" CanUserReorderColumns="False" HorizontalGridLinesBrush="Silver" VerticalGridLinesBrush="Silver" AlternatingRowBackground="Ivory" IsReadOnly="False" MouseDoubleClick="grvSelectedFiles_MouseDoubleClick" ToolTip="De click sobre una fila para seleccionar el archivo para removerlo o de doble click para observar el detalle de la validación">
				<DataGrid.Columns>
                    <DataGridTextColumn IsReadOnly="True" Binding="{Binding Status}" Header="Estado" Width="68" CanUserResize="False">                           
						<DataGridTextColumn.ElementStyle>
							<Style TargetType="TextBlock">
								<Setter Property="TextAlignment" Value="Center" />
							</Style>
						</DataGridTextColumn.ElementStyle>
						<DataGridTextColumn.CellStyle>
							<Style TargetType="DataGridCell">
								<Setter Property="Background" Value="{Binding IsValid, Converter={StaticResource ResourceKey=validFileColorConverter}}" />
							</Style>
						</DataGridTextColumn.CellStyle>
					</DataGridTextColumn>
					<DataGridTextColumn IsReadOnly="True" Header="Directorio" Width="210" Binding="{Binding Directory}">
						<DataGridTextColumn.CellStyle>
							<Style TargetType="DataGridCell">
								<Setter Property="ToolTip" Value="{Binding Directory}"/>
							</Style>
						</DataGridTextColumn.CellStyle>
					</DataGridTextColumn>
                    <DataGridTextColumn IsReadOnly="True" Binding="{Binding Name}" Header="Nombre de Archivo" Width="320" CanUserResize="False">
                    </DataGridTextColumn>
                    <DataGridTextColumn IsReadOnly="True" Header="Tamaño" Width="70" Binding="{Binding Length, Converter={StaticResource ResourceKey=lengthBytesConverter}}" CanUserResize="False" />
                    <DataGridTextColumn IsReadOnly="True" Binding="{Binding LastWriteTime, StringFormat={}{0:yyyy/MM/dd HH:mm:ss}}" Header="Modificado en" Width="118" CanUserResize="False"/>
					<DataGridTextColumn IsReadOnly="True" Binding="{Binding EncodingName}" Header="Codificación" Width="108"/>
				</DataGrid.Columns>
			</DataGrid>
			<Grid Grid.Row="2" Margin="0 6 0 0">
				<Grid.ColumnDefinitions>
					<ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
					<ColumnDefinition Width="Auto"/>
					<ColumnDefinition Width="Auto"/>
					<ColumnDefinition Width="Auto"/>
					<ColumnDefinition Width="*"/>
				</Grid.ColumnDefinitions>
                <Button Content="Seleccionar Archivos" Name="btnSelectFiles" ToolTip="De click para seleccionar los archivos a enviar" Width="160" Click="btnSelectFiles_Click" Height="26" />
                <Button Grid.Column="2" Name="btnRemoveFile" Content="Remover"  Margin="40,0,0,0" IsEnabled="False" HorizontalAlignment="Right" Width="80" Click="btnRemoveFile_Click" ToolTip="Solo remueve los elementos marcados de la lista Archivos de Entrada, no los elimina de su carpeta" Height="26"></Button>
				<ToggleButton Grid.Column="3" Margin="40 0 0 0" Content="Usar Carpeta Automática" Width="180" Name="btnUseAutomaticEntryFolder" Click="btnUseAutomaticEntryFolder_Click"></ToggleButton>
				<CheckBox Name="chkAutoSendOK" IsChecked="True" ToolTip="Hace que los archivos OK se envien automaticamente (sin oprimir el botón 'Enviar')" Grid.Column="4" Margin="20 10 0 0" Content="Envío Automático"></CheckBox>
					<Button Grid.Column="5" FontWeight="SemiBold" HorizontalAlignment="Right" Name="btnUploadFiles" Margin="0,0,0,0" IsEnabled="False" Click="btnUploadFiles_Click" Width="110" ToolTip="Envia solo los archivos en Estado OK de la lista Archivos de Entrada" Height="34" Foreground="#FFFFFFFA" Background="LightGoldenrodYellow">
                    <StackPanel Orientation="Horizontal">
                        <Image Height="24" Width="24" Source="/ESF.SFT.FileUploader;component/Images/SimpleUpload_32x32.png"></Image>
                        <Label Content="Enviar" Padding="10 6 6 6"></Label>
                    </StackPanel>
                </Button>
			</Grid>
			
			<Grid.ContextMenu>
				<ContextMenu StaysOpen="false" Opened="ContextMenu_Opened">
					<MenuItem Header="Pegar Archivos" Name="mengrvSelectedFilesPaste" Click="mengrvSelectedFilesPaste_Click">
						<MenuItem.Icon>
							<Image HorizontalAlignment="Center" Source="/ESF.SFT.FileUploader;component/Images/EditPaste_32x32.png" Width="20" Height="20" Stretch="UniformToFill" />
						</MenuItem.Icon>
					</MenuItem>
				</ContextMenu>
			</Grid.ContextMenu>
		</Grid>
		
		<Grid Margin="10 20 10 0" DockPanel.Dock="Top">
			<Grid.RowDefinitions>
				<RowDefinition Height="Auto"/>
				<RowDefinition Height="Auto"/>
			</Grid.RowDefinitions>
			
			<Grid>
				<Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*"/>
					<ColumnDefinition Width="Auto" />
				</Grid.ColumnDefinitions>
				<Image Name="imgSentFiles" Width="64" Height="64" Stretch="None" ToolTip="Listado de archivos cargados correctamente en el servidor, tenga en cuenta que el ser cargados no implica que esten correctos" />
                <StackPanel Grid.Column="1" Orientation="Vertical">
                    <Label Padding="5 2 0 0" Content="Archivos Enviados" FontWeight="SemiBold" FontSize="15"></Label>
                    <Label Padding="5 0 0 0" Content="Observe aqui el listado de los archivos de su Entidad, enviados por su usuario actual"></Label>
                    <Label Content="No ha enviado archivos" Name="lblgrvUploadFileHistoryCount" FontStyle="Italic" /> 
                </StackPanel>
                    
				<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
					<Button Name="btngrvUploadFileHistoryPrevious" ToolTip="Anterior" Height="30" Content="&lt;" Width="20" Click="btngrvUploadFileHistoryPrevious_Click"></Button>
					<Label Name="lblPageResumen" Content="Página 1 de 15" Width="180" HorizontalContentAlignment="Center" VerticalAlignment="Center"></Label>
					<Button Name="btngrvUploadFileHistoryNext" ToolTip="Siguiente" Height="30" Content="&gt;" Width="20" Click="btngrvUploadFileHistoryNext_Click"></Button>
				</StackPanel>
			</Grid>

			<Grid Grid.Row="1" Grid.Column="2">
				<Grid.ColumnDefinitions>
					<ColumnDefinition Width="*" />
					<ColumnDefinition Width="117" />
				</Grid.ColumnDefinitions>
				<Grid.RowDefinitions>
					<RowDefinition />
				</Grid.RowDefinitions>
				<DataGrid Height="216" Name="grvUploadFileHistory" AutoGenerateColumns="False" Margin="0 4 0 0" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserSortColumns="False" HorizontalGridLinesBrush="Silver" VerticalGridLinesBrush="Silver" AlternatingRowBackground="Ivory" SelectionMode="Single" SelectionUnit="FullRow" IsReadOnly="True">
					<DataGrid.Columns>
						<DataGridTextColumn Header="Nombre de Archivo" Binding="{Binding Name}"  Width="392" CanUserResize="False"  />
						<DataGridTextColumn Header="Tamaño" Width="70" Binding="{Binding LengthBytes, Converter={StaticResource ResourceKey=lengthBytesConverter}}" CanUserResize="False" />
						<DataGridTextColumn Header="Recibido en" Binding="{Binding UploadDateTime, StringFormat={}{0:yyyy/MM/dd HH:mm:ss}}" Width="118" CanUserResize="False">
							<DataGridTextColumn.CellStyle>
								<Style TargetType="DataGridCell">
									<Setter Property="ToolTip" Value="El archivo ha sido recibido en el servidor en esta fecha y hora"/>
									<Setter Property="Background" Value="{Binding Status, Converter={StaticResource ResourceKey=statusFileColorConverter}}" />
								</Style>
							</DataGridTextColumn.CellStyle>
						</DataGridTextColumn>
					</DataGrid.Columns>
				</DataGrid>
				<StackPanel Grid.Column="1" Margin="10 4 0 0">
					<Label Name="lblTitleStartUploadDate" Content="Fecha Carga Inicio" Margin="0 2 0 0"  VerticalAlignment="Bottom"></Label>
					<DatePicker Margin="0 2 0 0" Name="dtmStartUploadDate" />
					<Label Name="lblTitleEndUploadDate" Content="Fecha Carga Fin" VerticalAlignment="Bottom"></Label>
					<DatePicker Margin="0 2 0 0" Text="Fecha Final" Name="dtmEndUploadDate" />
					<Label Name="lblFilterToday" Margin="0 22 0 0" HorizontalAlignment="Center" Content="Solo los de Hoy" MouseDown="lblFilterToday_MouseDown" Foreground="DarkBlue" HorizontalContentAlignment="Center" />
					<Label Name="lblFilterClear" HorizontalAlignment="Center" Content="Todos" MouseDown="lblFilterClear_MouseDown" Foreground="DarkBlue" HorizontalContentAlignment="Center" />
					<Button Content="Consultar" Width="100" HorizontalAlignment="Center" Grid.Row="5" Margin="0 10 0 0" Click="btnShowUploadHistory_Click" Name="btnShowUploadHistory" VerticalAlignment="Top" Height="26" DataContext="{Binding}" ToolTip="Consulta el listado de archivos enviados de acuerdo con las fechas diligenciadas"></Button>
				</StackPanel>
			</Grid>
		</Grid>

		<StatusBar Height="34" VerticalAlignment="Bottom" Name="stsStatusBar" DockPanel.Dock="Bottom" MouseDoubleClick="stsStatusBar_DoubleClick">
			<StatusBarItem Width="462">
				<Label Name="lblStatusBarText" Margin="0">Listo</Label>				
			</StatusBarItem>
            <StatusBarItem Width="300">
				<Label Name="lblUserName" Margin="0,0,6,0"></Label>
			</StatusBarItem>
        </StatusBar>
	</DockPanel>
</src:BaseWPFWindow>